﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataContracts;

namespace TrainingWorkshop.MVPWebsite.User.Interface.Services
{
    public interface IUserService
    {
        /// <summary>
        /// Save a New User
        /// </summary>
        /// <param name="userDTO"></param>
        /// <returns></returns>
        bool AddNewUser(UserDTO userDTO);

        /// <summary>
        /// Delete User
        /// </summary>
        /// <param name="userId"></param>
        void DeleteUser(int userId);

        /// <summary>
        /// Update User
        /// </summary>
        /// <param name="userDTO"></param>
        void UpdateUser(UserDTO userDTO);

        /// <summary>
        /// Get All User
        /// </summary>
        /// <returns></returns>
        List<UserDTO> GetAllUser();

        /// <summary>
        /// Get All Department
        /// </summary>
        /// <returns></returns>
        List<DepartmentDTO> GetAllDepartment();


        /// <summary>
        /// Get User by Current UserId
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        UserDTO GetUserById(int userId);

        /// <summary>
        /// Search User by Complex Conditions
        /// </summary>
        /// <param name="departmentId"></param>
        /// <param name="firstName"></param>
        /// <param name="lastName"></param>
        /// <returns></returns>
        List<UserDTO> SearchUser(int departmentId, string firstName, string lastName);

        /// <summary>
        ///  Get All User Role
        /// </summary>
        /// <returns></returns>
        List<RoleDTO> GetAllUserRole();
    }
}
